import { IPSDataEntity } from '../ipsdata-entity';
import { IPSModelObject } from '../../ipsmodel-object';

/**
 *
 * 子接口类型识别属性[dERType]
 * @export
 * @interface IPSDERBase
 */
export interface IPSDERBase extends IPSModelObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 关系类型
   * @description 值模式 [实体关系类型] {DER1N：1:N关系、 DERINHERIT：继承关系、 DERINDEX：索引关系、 DER11：1:1 关系、 DERMULINH：多继承关系（虚拟实体）、 DERCUSTOM：自定义关系、 DERAGGDATA：聚合数据关系 }
   * @type {( string | 'DER1N' | 'DERINHERIT' | 'DERINDEX' | 'DER11' | 'DERMULINH' | 'DERCUSTOM' | 'DERAGGDATA')}
   */
  dERType: string | 'DER1N' | 'DERINHERIT' | 'DERINDEX' | 'DER11' | 'DERMULINH' | 'DERCUSTOM' | 'DERAGGDATA';

  /**
   * 逻辑名称
   * @type {string}
   */
  logicName: string;

  /**
   * 主实体
   *
   * @type {IPSDataEntity}
   */
  getMajorPSDataEntity(): IPSDataEntity | null;

  /**
   * 主实体
   *
   * @type {IPSDataEntity}
   */
  get majorPSDataEntity(): IPSDataEntity | null;

  /**
   * 主实体（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getMajorPSDataEntityMust(): IPSDataEntity;

  /**
   * 关系数据代码名称
   * @type {string}
   */
  minorCodeName: string;

  /**
   * 关系实体
   *
   * @type {IPSDataEntity}
   */
  getMinorPSDataEntity(): IPSDataEntity | null;

  /**
   * 关系实体
   *
   * @type {IPSDataEntity}
   */
  get minorPSDataEntity(): IPSDataEntity | null;

  /**
   * 关系实体（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getMinorPSDataEntityMust(): IPSDataEntity;

  /**
   * 排序值
   * @type {number}
   */
  orderValue: number;
}
